﻿using System.Collections.Generic;
using System.ServiceModel.Activation;
using System.Net.Mail;
using Acaweb.Common;
using Acaweb.Servicios.Security;
using Components = Acaweb.Componentes.Contracts;

namespace Acaweb.Servicios.Services
{
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class ContactosService : Contracts.IContactosService
    {
        Components.IContactosService _ContactoComponent = AppCtx.Resolve<Components.IContactosService>();
        User Usuario = AuthenticationService.GetCurrent();

        public bool EnviarEmailDocente(string Mensaje, string Asunto, string Docente)
        {
            List<string> Destinarario = new List<string>();

            Acaweb.Componentes.Contracts.IDocentesService _DocenteComponent = AppCtx.Resolve<Acaweb.Componentes.Contracts.IDocentesService>();

            Destinarario.Add(AuthenticationService.GetUserEmail(Docente));

            return _ContactoComponent.SendEmail(Mensaje, Asunto, Destinarario, Usuario.Email, Usuario.Name);
        }

        public bool EnviarEmailEstudiante(string Mensaje, string Asunto, List<int> Estudiantes)
        {
            List<string> Emails = new List<string>();

            Acaweb.Componentes.Contracts.IEstudiantesService _EstudianteComponent = AppCtx.Resolve<Acaweb.Componentes.Contracts.IEstudiantesService>();

            Estudiantes.ForEach(t => Emails.Add(AuthenticationService.GetUserEmail(t.ToString())));

            Emails.ForEach(t => Mensaje += t);

            Emails = new List<string>();

            Emails.Add("mferreira@usbctg.edu.co");

            return _ContactoComponent.SendEmail(Mensaje, Asunto, Emails, Usuario.Email, Usuario.Name);
        }

        public bool SendEmail(string Mensaje, string Asunto, List<string> Estudiantes)
        {
            MailMessage msg = new System.Net.Mail.MailMessage();
            Estudiantes.ForEach(t => msg.To.Add(t));
            User Usuario = AuthenticationService.GetCurrent();

            msg.From = new MailAddress(Usuario.Email, Usuario.Name, System.Text.Encoding.UTF8);
            msg.Subject = Asunto;
            msg.SubjectEncoding = System.Text.Encoding.UTF8;
            msg.Body = Mensaje;
            msg.BodyEncoding = System.Text.Encoding.UTF8;
            msg.IsBodyHtml = true;

            new SmtpClient().SendAsync(msg, string.Empty);
            return true;
            
        }
    }
}
